---
title: 核心功能
icon: Cpu
---

import RibbonStyle from '@/components/ribbon-style'

<MetaData
  lang="zh-CN"
  meta={{
    preset: [{
      client: '@univerjs/preset-sheets-core',
      locale: '@univerjs/preset-sheets-core/locales/zh-CN',
      style: '@univerjs/preset-sheets-core/lib/index.css',
    }],
    plugins: [{
      client: '@univerjs/core',
    }, {
      client: '@univerjs/engine-formula',
    }, {
      client: '@univerjs/engine-render',
    }, {
      client: '@univerjs/design',
      locale: '@univerjs/design/locale/zh-CN',
      style: '@univerjs/design/lib/index.css',
    }, {
      client: '@univerjs/ui',
      locale: '@univerjs/ui/locale/zh-CN',
      style: '@univerjs/ui/lib/index.css',
    }, {
      client: '@univerjs/sheets',
    }, {
      client: '@univerjs/sheets-ui',
      locale: '@univerjs/sheets-ui/locale/zh-CN',
      style: '@univerjs/sheets-ui/lib/index.css',
      facade: '@univerjs/sheets-ui/facade',
    }, {
      client: '@univerjs/sheets',
      locale: '@univerjs/sheets/locale/zh-CN',
      facade: '@univerjs/sheets/facade',
    }, {
      client: '@univerjs/sheets-ui',
      locale: '@univerjs/sheets-ui/locale/zh-CN',
      style: '@univerjs/sheets-ui/lib/index.css',
      facade: '@univerjs/sheets-ui/facade',
    }, {
      client: '@univerjs/sheets-formula',
      facade: '@univerjs/sheets-formula/facade',
    }, {
      client: '@univerjs/sheets-formula-ui',
      locale: '@univerjs/sheets-formula-ui/locale/zh-CN',
      style: '@univerjs/sheets-formula-ui/lib/index.css',
    }, {
      client: '@univerjs/sheets-numfmt',
      facade: '@univerjs/sheets-numfmt/facade',
    }, {
      client: '@univerjs/sheets-numfmt-ui',
      locale: '@univerjs/sheets-numfmt-ui/locale/zh-CN',
      style: '@univerjs/sheets-numfmt-ui/lib/index.css',
    }],
    server: '否',
  }}
/>

Univer Sheets 的核心功能包含了电子表格编辑器、公式引擎、渲染引擎、数字格式化引擎、设计系统和 UI 组件库等。它们共同构成了一个强大的电子表格处理平台，支持多种电子表格格式和复杂的电子表格操作。

## 特性

Univer Sheets 的核心功能包括：

- **电子表格渲染**：支持 Univer Sheets 的渲染和光标、选区的绘制。
- **单元格样式**：支持对电子表格中的单元格进行样式设置，包括字体、颜色、边框、对齐等。
- **公式计算**：支持在电子表格中添加和计算公式，支持几乎所有的 Excel 公式，包括数学、统计、文本、日期等函数。
- **数字格式化**：支持对电子表格中的数字进行格式化，包括货币、百分比、日期等格式。
- **网格线和冻结窗格**：支持显示网格线和冻结窗格功能，方便用户查看和编辑大数据量的电子表格。
- **默认样式**：支持对电子表格的默认样式进行设置，包括默认字体、字号、颜色等。
- **插件系统**：支持插件系统，可以自定义插件，这也是 Univer 核心架构能力之一。

## 预设模式

### 安装

```package-install
npm install @univerjs/presets @univerjs/preset-sheets-core
```

### 使用

```typescript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreZhCN from '@univerjs/preset-sheets-core/locales/zh-CN'
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

import '@univerjs/preset-sheets-core/lib/index.css'

const { univerAPI } = createUniver({
  locale: LocaleType.ZH_CN,
  locales: {
    [LocaleType.ZH_CN]: mergeLocales(
      UniverPresetSheetsCoreZhCN,
    ),
  },
  presets: [
    UniverSheetsCorePreset(),
  ],
})

univerAPI.createWorkbook({})
```

### 预设与配置

#### @univerjs/presets

本预设提供了创建 Univer 应用所需的 `createUniver` 方法，以及暴露了 **@univerjs/core** 和 **@univerjs/design** 的所有方法和对象。

`createUniver` 方法接受一个配置对象，包含主题、语言、预设等选项，返回一个 `Univer` 实例 `univer` 和用于调用 Facade API 的 `FUniver` 实例 `univerAPI`。

```typescript
interface CreateUniverParameter {
  // Univer 实例的主题，默认使用 defaultTheme
  theme: IStyleSheet
  // 是否使用暗黑模式，默认为 false。
  darkMode?: boolean
  // Univer 实例的语言环境
  locale: LocaleType
  // 要使用的语言环境对象，键为语言环境类型，值为对应的语言环境对象
  locales: ILocales
  // Univer 实例的日志级别
  logLevel?: LogLevel
  // 要使用的预设列表。
  presets: IPresets[]
  // 要使用的插件列表。
  plugins: IPlugins[]
}
```

参考：[`createUniver`](/reference/methods/create-univer)

#### @univerjs/preset-sheets-core

本预设是 Univer Sheets 的核心预设，包含了文档编辑器、公式引擎、渲染引擎等电子文档必要的核心功能。

```typescript
interface IUniverSheetsCorePresetConfig {
  // 容器元素，可以是字符串或者 DOM 元素
  container?: string | HTMLElement
  // 是否显示头部
  header?: boolean
  // 是否显示头部工具栏
  toolbar?: boolean
  // 头部工具栏的类型。default: 分组模式；simple：不分组模式
  ribbonType?: RibbonType
  // 是否显示底部。
  footer?: false | {
    // Sheet bar 是子表管理器，包括添加/切换/删除子表。
    sheetBar?: boolean
    // 统计栏包括当前选区的统计信息，如计数、总和、平均值等。
    statisticBar?: boolean
    // 在底部的菜单，包括高亮、网格线等。
    menus?: boolean
    // 底部的缩放滑块。
    zoomSlider?: boolean
  }
  // 是否显示右键菜单
  contextMenu?: boolean
  // 是否禁用自动聚焦
  disableAutoFocus?: true
  // 依赖注入的覆盖配置
  override?: DependencyOverride
  // 菜单配置
  menu?: MenuConfig

  // ... 更多配置项
}
```

其中，`menu` 配置项可以用于简单地设置某些特定菜单项的显示或隐藏等状态：

```typescript
UniverSheetsCorePreset({
  menu: {
    'sheet.command.set-range-bold': {
      hidden: true,
    },
    'sheet.command.set-range-italic': {
      hidden: true,
      disabled: true,
    },
  },
})
```

这里的 `'sheet.command.set-range-bold'` 和 `'sheet.command.set-range-italic'` 是命令的名称，表示对应的菜单项。

参考：[@univerjs/preset-sheets-core](/reference/packages/presets/univerjs/preset-sheets-core)

## 插件模式

### 安装

```package-install
npm install @univerjs/core @univerjs/design @univerjs/engine-render @univerjs/engine-formula @univerjs/ui @univerjs/docs @univerjs/docs-ui @univerjs/sheets @univerjs/sheets-ui @univerjs/sheets-formula @univerjs/sheets-formula-ui @univerjs/sheets-numfmt @univerjs/sheets-numfmt-ui
```

### 使用

```typescript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'
import DesignZhCN from '@univerjs/design/locale/zh-CN'
import { UniverDocsPlugin } from '@univerjs/docs'
import { UniverDocsUIPlugin } from '@univerjs/docs-ui'
import DocsUIZhCN from '@univerjs/docs-ui/locale/zh-CN'
import { UniverFormulaEnginePlugin } from '@univerjs/engine-formula'
import { UniverRenderEnginePlugin } from '@univerjs/engine-render'
import { UniverSheetsPlugin } from '@univerjs/sheets'
import { UniverSheetsFormulaPlugin } from '@univerjs/sheets-formula'
import { UniverSheetsFormulaUIPlugin } from '@univerjs/sheets-formula-ui'
import SheetsFormulaUIZhCN from '@univerjs/sheets-formula-ui/locale/zh-CN'
import { UniverSheetsNumfmtPlugin } from '@univerjs/sheets-numfmt'
import { UniverSheetsNumfmtUIPlugin } from '@univerjs/sheets-numfmt-ui'
import SheetsNumfmtUIZhCN from '@univerjs/sheets-numfmt-ui/locale/zh-CN'
import { UniverSheetsUIPlugin } from '@univerjs/sheets-ui'
import SheetsUIZhCN from '@univerjs/sheets-ui/locale/zh-CN'
import SheetsZhCN from '@univerjs/sheets/locale/zh-CN'
import { UniverUIPlugin } from '@univerjs/ui'
import UIZhCN from '@univerjs/ui/locale/zh-CN'

import '@univerjs/design/lib/index.css'
import '@univerjs/ui/lib/index.css'
import '@univerjs/docs-ui/lib/index.css'
import '@univerjs/sheets-ui/lib/index.css'
import '@univerjs/sheets-formula-ui/lib/index.css'
import '@univerjs/sheets-numfmt-ui/lib/index.css'

import '@univerjs/engine-formula/facade'
import '@univerjs/ui/facade'
import '@univerjs/docs-ui/facade'
import '@univerjs/sheets/facade'
import '@univerjs/sheets-ui/facade'
import '@univerjs/sheets-formula/facade'
import '@univerjs/sheets-numfmt/facade'

const univer = new Univer({
  locale: LocaleType.ZH_CN,
  locales: {
    [LocaleType.ZH_CN]: mergeLocales(
      DesignZhCN,
      UIZhCN,
      DocsUIZhCN,
      SheetsZhCN,
      SheetsUIZhCN,
      SheetsFormulaUIZhCN,
      SheetsNumfmtUIZhCN,
    ),
  },
})

univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverUIPlugin, {
  container: 'app',
})
univer.registerPlugin(UniverDocsPlugin)
univer.registerPlugin(UniverDocsUIPlugin)
univer.registerPlugin(UniverSheetsPlugin)
univer.registerPlugin(UniverSheetsUIPlugin)
univer.registerPlugin(UniverSheetsFormulaPlugin)
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
univer.registerPlugin(UniverSheetsNumfmtPlugin)
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)
```

### 插件与配置

#### @univerjs/core

本插件是 Univer 的核心库，提供了创建 Univer 实例、主题、语言等基础功能。

```typescript
interface UniverParameter {
  // Univer 实例的主题，默认使用 defaultTheme
  theme: IStyleSheet
  // 是否使用暗黑模式，默认为 false
  darkMode?: boolean
  // Univer 实例的语言环境
  locale: LocaleType
  // 要使用的语言环境对象，键为语言环境类型，值为对应的语言环境对象
  locales: ILocales
  // Univer 实例的日志级别
  logLevel?: LogLevel
}
```

参考：[`Univer`](/reference/classes/univer)

#### @univerjs/engine-render

本插件是 Univer 的渲染引擎，负责渲染、滚动条、光标和选区等的绘制。其提供了 `UniverRenderEnginePlugin` 插件。

参考：[@univerjs/engine-render](/reference/packages/plugins/univerjs/engine-render)

#### @univerjs/engine-formula

本插件是 Univer 的公式引擎，负责公式的计算和处理。其提供了 `UniverFormulaEnginePlugin` 插件。

参考：[@univerjs/engine-formula](/reference/packages/plugins/univerjs/engine-formula)

#### @univerjs/design

本插件是 Univer 的设计系统，提供了所有的基础组件和样式。

详见： [UI 章节](/guides/docs/ui/overview)

#### @univerjs/ui

本插件是 Univer 的 UI 基座。其提供了 `UniverUIPlugin` 插件。

`UniverUIPlugin` 提供了一些配置项，可用于基础布局的配置。

```typescript
interface IUniverUIConfig {
  // 容器元素，可以是字符串或者 DOM 元素。
  container?: string | HTMLElement
  // 是否显示头部
  header?: boolean
  // 是否显示头部工具栏
  toolbar?: boolean
  // 头部工具栏的类型。default: 分组模式；simple：不分组模式。
  ribbonType?: RibbonType
  // 是否显示右键菜单
  contextMenu?: boolean
  // 是否禁用自动聚焦
  disableAutoFocus?: true
  // 依赖注入的覆盖配置
  override?: DependencyOverride
  // 菜单配置
  menu?: MenuConfig
}
```

其中，`menu` 配置项可以用于简单地设置某些特定菜单项的显示或隐藏等状态：

```typescript
univer.registerPlugin(UniverSheetsUIPlugin, {
  menu: {
    'sheet.command.set-range-bold': {
      hidden: true,
    },
    'sheet.command.set-range-italic': {
      hidden: true,
      disabled: true,
    },
  },
})
```

这里的 `'sheet.command.set-range-bold'` 和 `'sheet.command.set-range-italic'` 是命令的名称，表示对应的菜单项。

参考：[@univerjs/ui](/reference/packages/plugins/univerjs/ui)

#### @univerjs/docs

本插件是 Univer Docs 的核心插件。其提供了 `UniverDocsPlugin` 插件。

参考：[@univerjs/docs](/reference/packages/plugins/univerjs/docs)

#### @univerjs/docs-ui

本插件是 Univer Docs 的 UI 插件，包含了文档编辑器的 UI 组件和交互。其提供了 `UniverDocsUIPlugin` 插件。

参考：[@univerjs/docs-ui](/reference/packages/plugins/univerjs/docs-ui)

#### @univerjs/sheets

本插件是 Univer Sheets 的核心插件，提供了电子表格编辑器的核心功能。其提供了 `UniverSheetsPlugin` 插件。

`UniverSheetsPlugin` 提供了一些配置项，可用于电子表格编辑器的配置。

```typescript
interface IUniverSheetsConfig {
  // 如果行样式和列样式都设置了，行样式是否优先于列样式
  isRowStylePrecedeColumnStyle?: boolean
  // 自动高度是否适用于合并单元格
  autoHeightForMergedCells?: boolean
}
```

参考：[@univerjs/sheets](/reference/packages/plugins/univerjs/sheets)

#### @univerjs/sheets-ui

本插件是 Univer Sheets 的 UI 插件，包含了电子表格编辑器的 UI 组件和交互。其提供了 `UniverSheetsUIPlugin` 插件。

`UniverSheetsUIPlugin` 提供了一些配置项，可用于电子表格编辑器的 UI 配置。

```typescript
interface IUniverSheetsUIConfig {
  // 是否显示底部。
  footer?: false | {
    // Sheet bar 是子表管理器，包括添加/切换/删除子表。
    sheetBar?: boolean
    // 统计栏包括当前选区的统计信息，如计数、总和、平均值等。
    statisticBar?: boolean
    // 在底部的菜单，包括高亮、网格线等。
    menus?: boolean
    // 底部的缩放滑块。
    zoomSlider?: boolean
  }
  // 是否显示公式栏
  formulaBar?: boolean
  clipboardConfig?: {
    // 在粘贴操作后是否显示粘贴选项按钮
    hidePasteOptions?: boolean
  }
  // 滚动条配置
  scrollConfig?: IScrollBarProps
  // 是否显示受保护范围的阴影。
  protectedRangeShadow?: boolean
  // 是否禁用强制字符串警告。
  disableForceStringAlert?: boolean
  // 是否禁用强制字符串标记。
  disableForceStringMark?: boolean
}
```

参考：[@univerjs/sheets-ui](/reference/packages/plugins/univerjs/sheets-ui)

## 工具栏布局与 `RibbonType`

通过配置 `IUniverSheetsCorePresetConfig` 或 `IUniverUIConfig` 的 `ribbonType` 属性，可以设置工具栏的布局。

`ribbonType` 支持设置为分组模式 `"default"` 和不分组模式 `"simple"`。分组模式将工具栏按功能分组，不分组模式则将所有工具放在一个平铺的列表中。

<RibbonStyle />
